package com.cg.design.graphicdesignpattern.decorator;

/**
 * 表示一种具体的装饰边框，是Border的子类，用指定的字符装饰字符串的左右两侧
 *
 * @program: LeetCode->SideBorder
 * @description: 表示一种具体的装饰边框，是Border的子类，用指定的字符装饰字符串的左右两侧
 * @author: cg
 * @create: 2022-03-25 19:12
 **/
public class SideBorder extends Border {

    /**
     * 表示装饰边框的字符
     */
    private final char borderChar;

    public SideBorder(Display display, char borderChar) {
        super(display);
        this.borderChar = borderChar;
    }

    @Override
    public int getColumns() {
        // 字符数为字符串数加上两侧的字符数
        return 1 + display.getColumns() + 1;
    }

    @Override
    public int getRows() {
        // 行数即被装饰的行数
        return display.getRows();
    }

    @Override
    public String getRowText(int row) {
        // 指定的那一行的字符串为被装饰物的字符串加上两侧的边框的字符
        return borderChar + display.getRowText(row) + borderChar;
    }
}
